iT邦幫忙

0

為了轉生而點技能-javascript,day3(觀念釐清-執行緒與同步、非同步

  • 分享至 

  • xImage
  •  

執行緒與同步、非同步

本篇是統整網路上各資源節錄而成,如有觀念錯誤的地方,還請大大們多多鞭策。

名詞解釋

行程/程序(process):

當一個程式(computer program)被執行,作業系統就會為這個程式生成一個程序,以管理該程式執行過程中記憶體和系統資源的分配。

執行緒(thread):

執行緒是構成程序的小單元,一個程序,至少包含一個或多個執行緒;CPU會進行排成(Scheduling),並依照優先級數,給予不同的執行緒相對應的運算資源。
https://ithelp.ithome.com.tw/upload/images/20211121/20143762Pd1bQdIiaz.jpg

  1. 單執行緒:描述對象為CPU系統或是瀏覽器系統運作的方式,代表該系統只能一個任務一個任務依序完成,遇到比較耗時的任務時,還未執行的任務就會處於等待狀態,一定要等到前面的任務完成了,才會往後執行。

  2. 多執行緒:指CPU可以同時實現多個執行緒並行執行的技術;或是,作業系統也可以通過快速的在不同執行緒之間進行切換,由於時間間隔很小,來給使用者造成一種多個執行緒同時執行的假象。
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762O9mdhBM8IB.png


  1. 同步:描述對象為程式語言本身的運作方式,以javascript來說,程式碼會是依次執行,不會突然跳掉下個程式碼。
    例子:
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762tMQbFNBNE8.png
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762NGOZKY1dw7.png
  2. 非同步:以javascript來說,遇到setTimeout、event callback、Http request 這些無法預期觸發執行時間的操作,會先行放到task queue/Event Queue/Job Queue/Callback Queue(皆同義)的地方,等待其他可以執行的程式碼執行完畢後,回頭再處理。
    https://ithelp.ithome.com.tw/upload/images/20211121/20143762ZBDayndbNH.png

參考資料:
1.* From Wikipedia-Process (computing)*:https://en.wikipedia.org/wiki/Process_(computing)
2. JavaScript 深入淺出 Event Loop、Job Queue:https://shawnlin0201.github.io/JavaScript/JavaScript-Event-Loop-and-Job-Queue/
3. 如何理解單執行緒、多執行緒?如何選擇多執行緒、多程序?:https://www.itread01.com/ixyfq.html
4. 以生活的例子說明單執行緒和多執行緒:https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/432463/#outline__6
5. JavaScript - 單執行緒、同步與非同步:https://chiangyuchi.github.io/2019/02/09/2019-02-10/
6. JavaScript 單執行緒(Single Thread):https://hoyis-note.coderbridge.io/2021/05/17/javascript-%E5%96%AE%E5%9F%B7%E8%A1%8C%E7%B7%92-%E5%90%8C%E6%AD%A5%E5%92%8C%E9%9D%9E%E5%90%8C%E6%AD%A5/
7. 浅析 JS 中的 EventLoop 事件循环(新手向):https://segmentfault.com/a/1190000019313028
8. 異步程式設計與事件迴圈:https://eyesofkids.gitbooks.io/javascript-start-from-es6/content/part4/eventloop.html


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言